"""
LangChain 模块专属配置
"""
from typing import Dict, Optional, Any
from pydantic import BaseModel, Field


class LLMProfile(BaseModel):
    """LLM 配置档案，定义了如何初始化一个 LLM 客户端。"""
    provider: str = Field(description="LLM 提供商 (e.g., 'openai', 'google_vertex_ai', 'baidu_qianfan')")
    model_name: str = Field(description="具体的模型名称 (e.g., 'gpt-4-turbo')")
    api_key: Optional[str] = Field(None, description="API Key")
    secret_key: Optional[str] = Field(None, description="Secret Key (例如百度需要)")
    temperature: float = Field(0.7, description="模型温度参数")
    # --- 新增字段 ---
    proxy: Optional[str] = Field(None, description="为此客户端指定一个 HTTP/HTTPS 代理，例如 'http://user:pass@host:port'")
    service_account_file_path: Optional[str] = Field(None, description="Google Cloud 服务账号的 JSON 密钥文件路径")
    # 可以添加更多特定于提供商的参数
    extra_args: Dict[str, Any] = Field(default_factory=dict, description="传递给客户端构造函数的其他参数")


class LangchainSettings(BaseModel):
    """LangChain 模块的所有相关配置"""
    enabled: bool = Field(False, description="是否启用 LangChain 相关功能")
    default_provider: str = Field("langchain", description="默认使用的 AI 提供商名称，目前仅支持 'langchain'")
    # Pydantic 会自动从环境变量中查找以 `AXIOM_LANGCHAIN_LLM_PROFILES__` 开头的变量
    # (假设 settings 实例中该字段名为 langchain，且顶级环境变量前缀为 AXIOM)
    llm_profiles: Dict[str, LLMProfile] = Field(default_factory=dict, description="LLM 配置档案字典") 